import store from '.'

export default (
  state = { ...store.state },
  action: { type: string; val: any },
) => {
  // 将传递的数据进行深拷贝
  let newState = JSON.parse(JSON.stringify(state))

  // 遍历存储的方法
  for (let key in store.actions) {
    // 判断传递的方法在 store 中是否存在
    if (action.type === key) {
      // 存在则调用对应的方法
      store.actions[key](newState, action)
      break
    }
  }

  // 返回 state
  return newState
}
